const Router = require("koa-router");
const { userValidator, verifyUser, cryptPassword, verifyLogin } = require("../middleware/user.middleware");
const { auth } = require("../middleware/auth.middleware");
const { register, login, modifyPassword } = require("../controller/user.controller");

/**
 * 实例化子路由，并设置该路由对象的前缀
 * 实际的路由路径会拼接上路由对象的前缀
 */
const router = new Router({ prefix: "/user" });

// 编写路由

/**
 * 注册接口
 * 实际的路由路径：/user/register
 * 当用户请求命中当前路由时，请求交先由userValidator, verifyUser中间件进行验证，如果验证通过就交由cryptPassword中间件进行加密处理，然后再交给register controller处理
 */
router.post("/register", userValidator, verifyUser, cryptPassword, register);

/**
 * 登录接口
 * 实际的路由路径：/user/login
 */
router.post("/login", userValidator, verifyLogin, login);

/**
 * 修改密码接口
 * 实际的路由路径：/user/modifyPassword
 * 当用户请求命中当前路由时，请求交先由auth中间件验证用户是否已经登陆了，如果验证登陆了就交由cryptPassword中间件进行加密处理，然后再交由modifyPassword controller处理
 */
router.patch("/modifyPassword", auth, cryptPassword, modifyPassword);

module.exports = router;
